<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    /* 
        变量的提升
            - 使用var声明的变量，它会在所有代码执行前被声明
              所以我们可以在变量声明前就访问变量
        函数的提升
            - 使用函数声明创建的函数，会在其他代码执行前被创建

        let声明的变量实际也会提升，但是在赋值之前解析器禁止对该变量访问
    */
 /*    fn(); // 可以执行
    function fn() {
      console.log("1");
    }
    b();
    let b = function () {
      //函数表达式创建函数，只是变量提升，而函数还是在原地，执行报错
      console.log("2");
    }; */
    console.log(aa, "aa");
    let aa = 20;
  </script>
</html>
